Question: The graph of $y = f(x)$ is shown below.

[asy]
unitsize(0.3 cm);

real func(real x) {
  real y;
  if (x >= -3 && x <= 0) {y = -2 - x;}
  if (x >= 0 && x <= 2) {y = sqrt(4 - (x - 2)^2) - 2;}
  if (x >= 2 && x <= 3) {y = 2*(x - 2);}
  return(y);
}

int i, n;

for (i = -8; i <= 8; ++i) {
  draw((i,-8)--(i,8),gray(0.7));
  draw((-8,i)--(8,i),gray(0.7));
}

draw((-8,0)--(8,0),Arrows(6));
draw((0,-8)--(0,8),Arrows(6));

label("$x$", (8,0), E);
label("$y$", (0,8), N);

draw(graph(func,-3,3),red);

label("$y = f(x)$", (4,-3), UnFill);
[/asy]

The graph of $y = g(x)$ is shown below.

[asy]
unitsize(0.3 cm);

real func(real x) {
  real y;
  if (x >= -3 && x <= 0) {y = -2 - x;}
  if (x >= 0 && x <= 2) {y = sqrt(4 - (x - 2)^2) - 2;}
  if (x >= 2 && x <= 3) {y = 2*(x - 2);}
  return(y);
}

real gunc(real x) {
  return(func(-x + 4));
}

int i, n;

for (i = -8; i <= 8; ++i) {
  draw((i,-8)--(i,8),gray(0.7));
  draw((-8,i)--(8,i),gray(0.7));
}

draw((-8,0)--(8,0),Arrows(6));
draw((0,-8)--(0,8),Arrows(6));

label("$x$", (8,0), E);
label("$y$", (0,8), N);

draw(graph(gunc,1,7),red);

label("$y = g(x)$", (4,-3), UnFill);
[/asy]

What is $g(x)$ in terms of $f(x)$?  For example, if you think $g(x) = f(x) + 1,$ enter "$f(x) + 1$", without quotation marks.
Solution: First, we reflect the graph in the $y$-axis.  The corresponding function is $y = f(-x).$

[asy]
unitsize(0.3 cm);

real func(real x) {
  real y;
  if (x >= -3 && x <= 0) {y = -2 - x;}
  if (x >= 0 && x <= 2) {y = sqrt(4 - (x - 2)^2) - 2;}
  if (x >= 2 && x <= 3) {y = 2*(x - 2);}
  return(y);
}

real funcg (real x) {
  return(func(-x));
}

int i, n;

for (i = -8; i <= 8; ++i) {
  draw((i,-8)--(i,8),gray(0.7));
  draw((-8,i)--(8,i),gray(0.7));
}

draw((-8,0)--(8,0),Arrows(6));
draw((0,-8)--(0,8),Arrows(6));

label("$x$", (8,0), E);
label("$y$", (0,8), N);

draw(graph(funcg,-3,3),red);
[/asy]

Then, we can shift the graph four units to the right.  Thus,
\[g(x) = f(-(x - 4)) = \boxed{f(4 - x)}.\]